package com.itlong.cloud.property.dao;


import com.itlong.cloud.POJO.PO.*;
import com.itlong.cloud.POJO.VO.app.*;
import com.itlong.cloud.POJO.VO.property.*;
import com.itlong.cloud.abstracts.IAbstractBaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <desc>
 *     物业账单 数据访问接口
 * </desc>
 * @createDate 2017-10-13.
 */
@Mapper
@Repository
public interface IPropertyAccountDao extends IAbstractBaseDao<PropertyInfoPO>{

    /**
     * <desc>
     *      分页查询 未缴费账单列表
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Qiang.S
     * @createDate 2018-08-13
     */
    List<PropertyUnpaymentVO> getUnpaymentByPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取未缴费账单记录数
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Qiang.S
     * @createDate 2018-08-13
     */
    Integer getUnpaymentCount(Map<String, Object> params);

    /**
     * <desc>
     *      分页查询 已缴费账单列表
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Qiang.S
     * @createDate 2018-08-13
     */
    List<PropertyPaymentVO> getPaymentByPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取已缴费账单记录数
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Qiang.S
     * @createDate 2018-08-13
     */
    Integer getPaymentCount(Map<String, Object> params);

    /**
     * <desc>
     *      分页查询 运营账单列表
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Qiang.S
     * @createDate 2019-06-06
     */
    List<PropertyPaymentVO> getOperateBillByPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取运营账单记录数
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Qiang.S
     * @createDate 2019-06-06
     */
    Integer getOperateBillCount(Map<String, Object> params);

    /**
     * <desc>
     *      未缴费账单列表
     * <desc/>
     *
     * @param feeIds 缴费账单ID,逗号分隔
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018-08-13
     */
    List<PropertyUnpaymentVO> getUnpaymentByFeeIds(@Param("feeIds")String[] feeIds, @Param("projectId")String projectId);

    /**
     * <desc>
     *      已缴费账单列表
     * <desc/>
     *
     * @param feeIds 缴费账单ID,逗号分隔
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018-08-13
     */
    List<PropertyPaymentVO> getPaymentByFeeIds(@Param("feeIds")String[] feeIds, @Param("projectId")String projectId);

    /**
     * <desc>
     *      运营账单列表
     * <desc/>
     *
     * @param feeIds 缴费账单ID,逗号分隔
     * @return
     * @author Qiang.S
     * @createDate 2019-06-06
     */
    List<PropertyPaymentVO> getOperatePaymentByFeeIds(@Param("feeIds")String[] feeIds);

    /**
     * <desc>
     *      获取账单详情
     * <desc/>
     *
     * @param feeId 缴费账单ID
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018-08-15
     */
    PropertyAccountDetailVO getAccounyDetail(@Param("feeId")String feeId, @Param("projectId")String projectId);

    /**
     * <desc>
     *      获取账单详情
     * <desc/>
     *
     * @param projectId 项目编号
     * @param feeId 缴费账单ID
     * @param roomId 房间编号
     * @param userId 用户编号
     * @return
     * @author Qiang.S
     * @createDate 2018-08-15
     */
    AppServiceAccountDetailVO getAccounyDetailForAPP(@Param("feeId")String feeId,
                                                     @Param("projectId")String projectId,
                                                     @Param("roomId")String roomId,
                                                     @Param("year")String year,
                                                     @Param("month")String month,
                                                     @Param("userId")String userId);

    /**
     * <desc>
     *      获取录入费用详情
     * <desc/>
     *
     * @param feeId 缴费账单ID
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018-08-15
     */
    List<PropertyAccountRecordVO> getAccountRecord(@Param("feeId")String feeId, @Param("projectId")String projectId);

    /**
     * <desc>
     *      根据用户ID获取房屋列表
     * <desc/>
     *
     * @param userId 用户ID
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018-08-17
     */
    List<AppServiceRoomsInfoVO> getRoomList(@Param("userId")String userId, @Param("projectId")String projectId);

    /**
     * <desc>
     *      根据用户ID获取账单时间
     * <desc/>
     *
     * @param roomId 房屋编号
     * @return
     * @author Qiang.S
     * @createDate 2018-08-17
     */
    List<AppServiceAccountTimeVO> getTimeList(@Param("roomId")String roomId);

    /**
     * <desc>
     *      APP获取录入费用详情
     * <desc/>
     *
     * @param feeId 缴费账单ID
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018-08-17
     */
    List<AppServiceRecordInfoVO> getAccountRecordForAPP(@Param("feeId")String feeId, @Param("projectId")String projectId);

    /**
     * <desc>
     *      APP获取录入费用详情阶梯收费信息
     * <desc/>
     *
     * @param feeRuleId 收费规则ID
     * @return
     * @author Qiang.S
     * @createDate 2018-10-12
     */
    List<LadderFeeInfoPO> getLadderFeeInfo(String feeRuleId);

    /**
     * <desc>
     *     查询账单缴费状态
     * <desc/>
     *
     * @param feeId 缴费账单ID
     * @param projectId 项目编号
     * @return  MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/08/15
     */
    String getFeeStatus(@Param("feeId")String feeId, @Param("projectId")String projectId);

    /**
     * <desc>
     *     账单支付
     * <desc/>
     *
     * @param feeId 缴费账单ID
     * @param projectId 项目编号
     * @param paymentType 收费方式：1现金 2银行转账 3支付宝转账 4微信转账 5小区收款码-微信 6小区收款码-支付宝 7其他支付方式
     * @param loginUserId 操作员ID
     * @return  MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/08/15
     */
    Integer updatePaymentType(@Param("feeId")String feeId, @Param("projectId")String projectId,
                              @Param("paymentType")String paymentType, @Param("loginUserId")String loginUserId);

    /**
     * <desc>
     *     账单支付(不重新计算支付金额)
     * <desc/>
     *
     * @param feeId 缴费账单ID
     * @param projectId 项目编号
     * @param paymentType 收费方式：1现金 2银行转账 3支付宝转账 4微信转账 5小区收款码-微信 6小区收款码-支付宝 7其他支付方式
     * @param loginUserId 操作员ID
     * @return  MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/08/15
     */
    Integer updatePaymentTypeForOther(@Param("feeId")String feeId, @Param("projectId")String projectId,
                              @Param("paymentType")String paymentType, @Param("loginUserId")String loginUserId);

    /**
     * <desc>
     *     账单支付(临时停车缴费)
     * <desc/>
     *
     * @param feeId 缴费账单ID
     * @param feeStatus 费用状态：1未缴账单 2已缴账单
     * @param originPay 支付来源：1物业 2APP
     * @param paymentType 收费方式：1现金 2银行转账 3支付宝转账 4微信转账 5小区收款码-微信 6小区收款码-支付宝 7其他支付方式
     * @return  MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/08/15
     */
    Integer updatePaymentTypeForParking(@Param("feeId")String feeId, @Param("feeStatus")String feeStatus,
                                        @Param("originPay")String originPay, @Param("paymentType")String paymentType);

    /**
     * <desc>
     *     明细账单支付状态修改
     * <desc/>
     *
     * @param feeId 缴费账单ID
     * @return  MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/10/11
     */
    Integer updatePaymentRecordType(String feeId);

    /**
     * <desc>
     *     根据账单编号获取账单类型
     * <desc/>
     *
     * @param feeId 缴费账单ID
     * @return  MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/10/22
     */
    Integer getTypeByFeeId(String feeId);

    /**
     * <desc>
     *      APP分页获取账单列表
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Qiang.S
     * @createDate 2018-08-21
     */
    List<AppServiceAccountInfoVO> getAccountBypageForAPP(Map<String, Object> params);

    /**
     * <desc>
     *      APP分页获取账单记录数
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Qiang.S
     * @createDate 2018-08-21
     */
    Integer getAccountCountForAPP(Map<String, Object> params);

    /**
     * <desc>
     *      获取未缴费且已逾期产生滞纳金的账单信息
     * </desc>
     *
     * @return 未缴费且已逾期产生滞纳金的账单信息
     * @author wangzhi
     * @createDate 2018/08/29
     */
    List<PropertyOverdueUnpaidBillGetVO> getOverdueUnpaidBillS();

    /**
     * <desc>
     *      批量更新物业缴费录入数据中的滞纳金相关信息
     * </desc>
     *
     * @param propertyPaymentDataRecordPOList 待更新的数据集
     * @return
     * @author wangzhi
     * @createDate 2018/08/29
     */
    Integer batchUpdatePenaltyForDataRecord(List<PropertyPaymentDataRecordPO> propertyPaymentDataRecordPOList);

    /**
     * <desc>
     *      批量更新物业缴费账单数据中的滞纳金相关信息
     * </desc>
     *
     * @param map 参数集
     * @return
     * @author wangzhi
     * @createDate 2018/08/29
     */
    Integer batchUpdatePenaltyForBill(@Param("condition") Map<String, PropertyPaymentBillPO> map);

    /**
     * <desc>
     *      获取需要发送催费短信的组装信息对象
     * </desc>
     *
     * @return 催费短信组装信息对象
     * @author wangzhi
     * @createDate 2018/08/31
     */
    List<PropertyRushFeeMessageVO> getRushFeeMessage();

    /**
     * <desc>
     *      根据房间编号获取未缴费账单个数
     * </desc>
     *
     * @param roomId 房间编号
     * @return 催费短信组装信息对象
     * @author Qiang.S
     * @createDate 2018/09/18
     */
    Integer getAccountByRoomId(@Param("roomId") String roomId);

    /**
     * <desc>
     *      根据车牌在入出场记录中查询未出场车辆信息
     * </desc>
     *
     * @param plateNumber 车牌
     * @return 车辆入场唯一标识
     * @author Qiang.S
     * @createDate 2018/11/07
     */
    PropertyParkPassRecordVO getParkingInfo(@Param("plateNumber") String plateNumber);

    /**
     * <desc>
     *      根据账单编号在入出场记录中查询未出场车辆信息
     * </desc>
     *
     * @param feeId 账单编号
     * @return
     * @author Qiang.S
     * @createDate 2018/11/08
     */
    PropertyParkPassRecordVO getParkingInfoByFeeId(String feeId);

    /**
     * <desc>
     *      获取单个优惠券信息
     * </desc>
     *
     * @param redeemCode 兑换码
     * @param parkCouponId 优惠券编号
     * @param useStatus 使用状态
     * @return 单个优惠券信息
     * @author Qiang.S
     * @createDate 2018/11/07
     */
    PropertyParkCouponGetOneVO getOneCoupon(@Param("redeemCode") String redeemCode, @Param("parkCouponId") String parkCouponId, @Param("useStatus") String useStatus);

    /**
     * <desc>
     *      根据车辆编号获取项目下用户编号
     * </desc>
     *
     * @param plateNumber 车牌号
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2019/06/18
     */
    String getUserIdByCarNum(@Param("plateNumber") String plateNumber, @Param("projectId") String projectId);

    /**
     * <desc>
     *      获取车辆信息
     * </desc>
     *
     * @param userId 用户编号
     * @param plateNumber 车牌
     * @return
     * @author Qiang.S
     * @createDate 2018/11/07
     */
    PropertyCarGetOneVO getOneBasicCar(@Param("userId") String userId,@Param("plateNumber") String plateNumber);

    /**
     * <desc>
     *      更新车辆通行记录表中账单编号
     * </desc>
     *
     * @param parkingId 停车标识
     * @param feeId 账单编号
     * @param parkCouponId 优惠券编号
     * @return
     * @author Qiang.S
     * @createDate 2018/11/08
     */
    Integer updateParkRecord(@Param("parkingId") String parkingId,@Param("feeId") String feeId,@Param("parkCouponId") String parkCouponId);

    /**
     * <desc>
     *      根据账单号查询已缴费的费用
     * </desc>
     *
     * @param feeId 账单编号
     * @return
     * @author Qiang.S
     * @createDate 2018/11/08
     */
    String getParkingPayAll(@Param("feeId") String feeId);

    /**
     * <desc>
     *      判断车辆是否是月卡用户
     * </desc>
     *
     * @param projectId 项目编号
     * @param plateNumber 车牌
     * @return
     * @author Qiang.S
     * @createDate 2018/11/14
     */
    Integer getCarMonthCardInfoByPlateNumber(@Param("projectId") String projectId, @Param("plateNumber") String plateNumber);

    /**
     * <desc>
     *      判断车辆进场时间时是否是月卡用户
     * </desc>
     *
     * @param projectId 项目编号
     * @param plateNumber 车牌
     * @param inTime 进场时间
     * @return
     * @author Qiang.S
     * @createDate 2018/11/14
     */
    Integer getCarMonthCardInfoByInTime(@Param("projectId") String projectId, @Param("plateNumber") String plateNumber, @Param("inTime") String inTime);

    /**
     * <desc>
     *      更新优惠卷状态
     * </desc>
     *
     * @param parkCouponId 优惠卷编号
     * @return
     * @author Qiang.S
     * @createDate 2018/11/14
     */
    Integer updateCouponUseStatus(@Param("parkCouponId") String parkCouponId);

    /**
     * <desc>
     *      根据账单编号判断是否可以使用优惠卷
     * </desc>
     *
     * @param feeId 账单编号
     * @return
     * @author Qiang.S
     * @createDate 2018/11/15
     */
    Integer checkIsCoupon(@Param("feeId") String feeId);

    /**
     * <desc>
     *      查询出已经欠费逻辑的账单
     * </desc>
     *
     * @return 已经欠费的账单
     * @author wangzhi
     * @createDate 2019/01/22
     */
    List<PropertyArrearageBillGetVO> getArrearageBills();

    /**
     * <desc>
     *      更新用户项目欠费状态
     * </desc>
     *
     * @param userIdAndProjectId userId和projectId连接
     * @return 0失败
     * @author wangzhi
     * @createDate 2019/01/22
     */
    Integer setUserArrearageStatus(List<String> userIdAndProjectId);

    /**
     * <desc>
     *      更新房屋欠费状态
     * </desc>
     *
     * @param roomIdSet roomId集
     * @return 0失败
     * @author wangzhi
     * @createDate 2019/01/22
     */
    Integer setRoomArrearageStatus(Set<String> roomIdSet);

    /**
     * <desc>
     *      查询出已经欠费逻辑的账单，用roomId分组结果
     * </desc>
     *
     * @return 已经欠费的账单，用roomId分组结果
     * @author wangzhi
     * @createDate 2019/01/22
     */
    List<PropertyArrearageBillGetVO> getArrearageBillGroupByRoomId();

    /**
     * <desc>
     *      根据项目查询出已经欠费逻辑的账单，用roomId分组结果
     * </desc>
     *
     * @param projectId 项目编号
     * @return 已经欠费的账单，用roomId分组结果
     * @author wangzhi
     * @createDate 2019/01/22
     */
    List<PropertyArrearageBillGetVO> getArrearageBillGroupByProjectId(String projectId);

    /**
     * <desc>
     *      将项目下用户数据全部更新为未欠费
     * </desc>
     *
     * @param projectId 项目编号
     * @return 生效行数
     * @author Qiang.S
     * @createDate 2019/01/25
     */
    Integer updateProjectArrearageStatus(String projectId);

    /**
     * <desc>
     *      将项目下房间数据全部更新为未欠费
     * </desc>
     *
     * @param projectId 项目编号
     * @return 生效行数
     * @author Qiang.S
     * @createDate 2019/01/25
     */
    Integer updateRoomArrearageStatus(String projectId);

    /**
     * <desc>
     *      保存推送房间信息指令
     * </desc>
     *
     * @return 0失败，1成功
     * @author wangzhi
     * @createDate 2019/01/22
     */
    Integer batchSaveDeviceBusinessChangeLog(List<DeviceBusinessChangeLogPO> deviceBusinessChangeLogPOList);

    /**
     * <desc>
     *      更新用户和房间欠费状态
     * <desc/>
     *
     * @param   feeId 账单ID
     * @author Juguang.S
     * @createDate 2019/01/22
     */
    List<AppUserAndRoomInfoVO> getForbiddenInfo(@Param("feeId") String feeId);

    /**
     * <desc>
     *      根据账单号查询房间号
     * <desc/>
     *
     * @param   feeId 账单ID
     * @author Qiang.S
     * @createDate 2019/07/02
     */
    String getFeeRoomId(@Param("feeId") String feeId);

    /**
     * <desc>
     *      根据房间查询欠费天数
     * <desc/>
     *
     * @param   roomId 房间编号
     * @param   projectId 项目编号
     * @author Qiang.S
     * @createDate 2019/07/02
     */
    Integer getMaxArrearDaysByRoomId(@Param("roomId") String roomId,@Param("projectId") String projectId);

    /**
     * <desc>
     *     批量修改已交物业费的用户的欠费状态
     * </desc>
     *
     * @param userIdList 用户id集合
     * @return 受影响的行数
     * @author Juguang.S
     * @createDate 2019/01/22
     */
    Integer updateUserStatus(@Param("userIdList") List<String> userIdList);

    /**
     * <desc>
     *     批量修改已交物业费的房间的欠费状态
     * </desc>
     *
     * @param roomIdList 房间id集合
     * @return 受影响的行数
     * @author Juguang.S
     * @createDate 2019/01/22
     */
    Integer updateRoomStatus(@Param("roomIdList") List<String> roomIdList);

    /**
     * <desc>
     *      查询出已经欠费逻辑的账单，用roomId分组结果
     * </desc>
     *
     * @return 已经欠费的账单，用roomId分组结果
     * @author wangzhi
     * @createDate 2019/01/22
     */
    List<PropertyArrearageBillGetVO> getArrearageBillGroupByRoomIdByProjectId(@Param("projectId") String projectId);

    /**
     * <desc>
     *      查询出已经欠费逻辑的账单，用roomId分组结果
     * </desc>
     *
     * @return 已经欠费的账单，用roomId分组结果
     * @author Qiang.S
     * @createDate 2019/01/27
     */
    List<PropertyArrearageBillGetVO> getArrearageInfoRoomIdByProjectId(@Param("projectId") String projectId);

    /**
     * <desc>
     *      查询当前设备下已经欠费的账单汇总结果
     * </desc>
     *
     * @param projectId 房间id集合
     * @param deviceUnique 设备编号
     * @param deviceType 设备类型 1云电梯 2云门禁 3云对讲
     * @param flag 0单元,1楼栋
     * @param roomIds 房间编号
     * @param userId 用户编号
     * @return
     * @author Qiang.S
     * @createDate 2019/05/28
     */
    H5ServiceAccountInfoVO getAllArrearsBill(@Param("projectId") String projectId,
                                             @Param("deviceUnique") String deviceUnique,
                                             @Param("deviceType") String deviceType,
                                             @Param("flag") Integer flag,
                                             @Param("roomIds") String[] roomIds,
                                             @Param("userId") String userId);

    /**
     * <desc>
     *      查询小程序全部欠费账单
     * </desc>
     *
     * @param projectId 项目编号
     * @param userId 用户编号
     * @return
     * @author Qiang.S
     * @createDate 2019/06/03
     */
    H5ServiceAccountInfoVO getAllArrearsBillForMini(@Param("projectId") String projectId,
                                                    @Param("userId") String userId);

    /**
     * <desc>
     *      查询云门禁的绑定地址类型0单元,1楼栋
     * </desc>
     *
     * @param deviceUnique 设备编号
     * @return
     * @author Qiang.S
     * @createDate 2019/05/28
     */
    Integer getEntranceType(String deviceUnique);

    /**
     * <desc>
     *      查询云对讲的绑定地址类型0单元,1楼栋
     * </desc>
     *
     * @param deviceUnique 设备编号
     * @return
     * @author Qiang.S
     * @createDate 2019/05/28
     */
    Integer getIntercomType(String deviceUnique);

    /**
     * <desc>
     *      根据项目编号查询当前项目的增值信息
     * </desc>
     *
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2019/05/28
     */
    PropertyValuePO getPropertyValueInfo(String projectId);

    /**
     * <desc>
     *      根据房间查询用户编号
     * </desc>
     *
     * @param roomId 房间编号
     * @return
     * @author Qiang.S
     * @createDate 2019/05/28
     */
    String getUserIdByRoomId(String roomId);

    /**
     * <desc>
     *      根据账单查询过期临时通行数据
     * </desc>
     *
     * @return
     * @author Qiang.S
     * @createDate 2019/05/31
     */
    List<PropertyPaymentBillPO> getUserIdForBill();

    /**
     * <desc>
     *      根据用户编号查询项目下欠费房间编号
     * </desc>
     *
     * @param userId 用户编号
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2019/05/31
     */
    List<String> getRoomIdByUserId(@Param("userId") String userId,@Param("projectId") String projectId);

    /**
     * <desc>
     *      根据账单编号更新临时通行处理标记
     * </desc>
     *
     * @param feeId 账单编号
     * @param temporaryFlag 临时通行过期处理标记 0未处理 1已处理
     * @return
     * @author Qiang.S
     * @createDate 2019/05/31
     */
    Integer updateTemproparyFlag(@Param("feeId") String feeId,@Param("temporaryFlag") Integer temporaryFlag);

    /**
     * <desc>
     *      根据用户查询项目下房间的账单年份列表
     * </desc>
     *
     * @param projectId 项目编号
     * @param roomId 房间编号
     * @return
     * @author Qiang.S
     * @createDate 2019/06/04
     */
    List<H5ServiceAccountListVO> getUserBillDateList(@Param("projectId") String projectId,@Param("roomId") String roomId);

    /**
     * <desc>
     *      根据用户查询项目下房间的当年账单列表
     * </desc>
     *
     * @param projectId 项目编号
     * @param roomId 房间编号
     * @param year 年份
     * @return
     * @author Qiang.S
     * @createDate 2019/06/04
     */
    List<H5ServiceAccountInfoVO> getUserBillListByYear(@Param("projectId") String projectId,@Param("roomId") String roomId,@Param("year") String year);

    /**
     * <desc>
     *      获取用户基础信息
     * </desc>
     *
     * @param userId 用户id
     * @return
     * @author Qiang.S
     * @createDate 2019/06/12
     */
    AppUserInfoPO getBaseUserInfo(@Param("userId") String userId);

    /**
     * <desc>
     *      获取待推送缴费通知的账单信息
     * </desc>
     *
     * @return 待推送缴费通知的账单信息
     * @author wangzhi
     * @createDate 2019/06/13
     */
    List<PropertyPaymentBillPO> getRushPayNoticeBill();

    /**
     * <desc>
     *      获取待推送小区通知和系统消息的用户信息
     * </desc>
     *
     * @return 待推送小区通知和系统消息的用户信息
     * @author wangzhi
     * @createDate 2019/06/21
     */
    List<PropertyPaymentBillPO> getMessageUserList();

    /**
     * <desc>
     *      根据项目ID查询项目信息
     * </desc>
     *
     * @param projectId 项目编号
     * @return 项目信息
     * @author wangzhi
     * @createDate 2019/10/24
     */
    ProjectPO getProjectInfo(@Param("projectId") String projectId);
}
